package utils;
import java.util.Scanner;
/**
 * @Package: utils
 * @Description 控制台推箱子
 * @Author xiWei
 * @WeChat XW-MXN
 * @Date 2024/10/11 9:42
 * @Version V2.0.0
 */

public class tuixiangzi {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[][] map = new int[15][15]; //地图
        int rx = 1;
        int ry = 2;//人的坐标
        int xx = 13;
        int xy = 12;//箱子的坐标
        int mx = 10;
        int my = 3;//目的地坐标

        map[rx][ry] = 1; // 设置人的坐标位置为1
        map[xx][xy] = 2; // 设置箱子的坐标位置为2
        map[mx][my] = 3; // 设置目的地的坐标位置为3
        boolean tt = false;

        while(true){
            for(int i=0;i<15;i++){
                for(int j=0;j<15;j++){
                    if(map[i][j] == 1){
                        System.out.print("刁"); // 人物
                    }else if(map[i][j] == 2){
                        System.out.print("▲"); // 箱子
                    }else if(map[i][j] == 3){
                        System.out.print("★"); // 目的地
                    }else{
                        System.out.print("□"); // 地图
                    }
                }
                System.out.println(); // 换行
            }
            if(tt){ // 判断
                System.out.print("成功将箱子推到终点！");
                break; // 跳出循环
            }
            System.out.print("要往哪走(w上,s下,a左,d右)："); // 用户输入
            String f = input.next(); // 只接收一个字符

            if(f.equals("w")){ // 上
                // 判断人是否走到边上
                if(rx-1<0){
                    continue;
                }
                // 判断人是否推着箱子
                if(map[rx-1][ry]==2){
                    //判断箱子是否在边上
                    if(rx-2<0){
                        continue;
                    }
                    // 判断箱子是否进入目的地
                    if(map[rx-2][ry] == 3){
                        tt=true;
                    }
                    // 箱子走一步
                    map[rx-2][ry]=2;
                }
                // 判断人是否走到目的地里
                if(map[rx-1][ry]==3){
                    map[rx][ry]=0;
                    rx--;
                    continue;
                }else if(map[rx][ry]==3){// 判断人是否走出目的地
                    map[rx][ry]=3;
                    rx--;
                    map[rx][ry]=1;
                    continue;
                }
                map[rx][ry]=0;
                rx--;
                map[rx][ry]=1;

            }else if(f.equals("s")){ // 下
                // 判断人是否走到边上
                if(rx+1>14){
                    continue;
                }
                // 判断人是否推着箱子
                if(map[rx+1][ry]==2){
                    //判断箱子是否在边上
                    if(rx+2>14){
                        continue;
                    }
                    // 判断箱子是否进入目的地
                    if(map[rx+2][ry] == 3){
                        tt=true;
                    }
                    // 箱子走一步
                    map[rx+2][ry]=2;
                }
                // 判断人是否走到目的地里
                if(map[rx+1][ry]==3){
                    map[rx][ry]=0;
                    rx++;
                    continue;
                }else if(map[rx][ry]==3){// 判断人是否走出目的地
                    map[rx][ry]=3;
                    rx++;
                    map[rx][ry]=1;
                    continue;
                }
                map[rx][ry]=0;
                rx++;
                map[rx][ry]=1;

            }else if(f.equals("a")){ // 左
                // 判断人是否走到边上
                if(ry-1<0){
                    continue;
                }
                // 判断人是否推着箱子
                if(map[rx][ry-1]==2){
                    //判断箱子是否在边上
                    if(ry-2<0){
                        continue;
                    }
                    // 判断箱子是否进入目的地
                    if(map[rx][ry-2] == 3){
                        tt=true;
                    }
                    // 箱子走一步
                    map[rx][ry-2]=2;
                }
                // 判断人是否走到目的地里
                if(map[rx][ry-1]==3){
                    map[rx][ry]=0;
                    ry--;
                    continue;
                }else if(map[rx][ry]==3){// 判断人是否走出目的地
                    map[rx][ry]=3;
                    ry--;
                    map[rx][ry]=1;
                    continue;
                }
                map[rx][ry]=0;
                ry--;
                map[rx][ry]=1;
            }else if(f.equals("d")){ // 右
                // 判断人是否走到边上
                if(ry+1>14){
                    continue;
                }
                // 判断人是否推着箱子
                if(map[rx][ry+1]==2){
                    //判断箱子是否在边上
                    if(ry+2>14){
                        continue;
                    }
                    // 判断箱子是否进入目的地
                    if(map[rx][ry+2] == 3){
                        tt=true;
                    }
                    // 箱子走一步
                    map[rx][ry+2]=2;
                }
                // 判断人是否走到目的地里
                if(map[rx][ry+1]==3){
                    map[rx][ry]=0;
                    ry++;
                    continue;
                }else if(map[rx][ry]==3){// 判断人是否走出目的地
                    map[rx][ry]=3;
                    ry++;
                    map[rx][ry]=1;
                    continue;
                }
                map[rx][ry]=0;
                ry++;
                map[rx][ry]=1;
            }

        }
    }
}
